package main

import "fmt"

func main() {
	// 语法 copy(复制的目标切片1，要复制的切片2， 【】T) int
	// 设置元素的数量为1000
	const elementCount = 1000
	// 预分配足够多的元素切片
	srcData := make([]int, elementCount)
	// 将切片赋值
	for i := 0; i < elementCount; i++ {
		srcData[i] = i
	}
	// 引用切片数据
	retData := srcData
	// 预分配足够多的元素切片
	copyData := make([]int, elementCount)
	// 将数据复制到新的切片空间中
	copy(copyData, srcData)
	// 修改原始数据的第一个元素
	srcData[0] = 999
	// 打印引用切片的第一个元素
	fmt.Println(retData) //第一个为999
	// 打印复制切片的第一个和最后一个元素
	fmt.Println(copyData[0], copyData[elementCount-1])
	// 复制原始数据从4到6（不包含6）
	copy(copyData, srcData[4:6])
	// 复制以后把前两个元素给取代了 后面不变
	for i := 0; i < 5; i++ {
		fmt.Printf("%d", copyData[i])
	}
	fmt.Println(copyData)
}
